package 力扣.数学;

public class 整数反转7 {
    public static void main(String[] args) {
        int reverse = reverse(2147483641);
//        System.out.println(Integer.MAX_VALUE);//最大值：2147483647
//        System.out.println(Integer.MIN_VALUE);//最小值：2147483648
        System.out.println(reverse);
    }

    /**
     * 对付反转题目的技巧：使用‘/’或者‘%’得出最后一位的值，然后使用‘*’、‘+’拼接新的数字
     * @param x
     * @return
     */
    public static int reverse(int x) {
        int re = 0;
        while (x != 0){//终止条件
            int te = x % 10;
            if (re > Integer.MAX_VALUE/10 || (re == Integer.MAX_VALUE/10 && te > 7)){
                return 0;
            }
            if (re < Integer.MIN_VALUE/10 || (re == Integer.MIN_VALUE/10 && te < -8)){
                return 0;
            }
            re = re * 10 +te;
            x /= 10;
        }
        return re;
    }
}
